#!/usr/bin/python
# -*- coding: utf-8 -*-
from utilities import Utilities as util
import urllib2, urllib
import unicodedata
import re

class CorpusCleaner:

	def __init__(self):
		stop_words = util.read_document('stop_words.txt')
		stop_words = self.__remove_tilde(stop_words)
		self.stop_words_list = set(stop_words.split())

		self.pattern = re.compile('[\w]+')

	def clear_claim(self, text, stemming=True):
		text = text.lower()
		text = self.__remove_tilde(text)
		text = self.__remove_non_words(text)
		text = self.__remove_stop_words(text)
		if stemming:
			text = self.__stemming(text)
		text = self.__remove_non_words(text)
		#print text
		return text

	def __remove_tilde(self, text):
		temp = ''.join((c for c in unicodedata.normalize('NFD', unicode(text,'utf-8')) if unicodedata.category(c) != 'Mn'))
		return temp.encode('utf-8')

	def __remove_non_words(self, text):
		#return text.strip(' \t\n\r').replace('-',' ').replace('')
		tokens = self.pattern.findall(text)
		text = ''
		for t in tokens:
			text+= t+' '
		text.encode('utf-8')
		return text


	def __stemming(self, text):
		
		tokens = text.split()
		words = ""
		for t in tokens: words = words+t+'_'
		try: 
			params = urllib.urlencode({"words": words.encode('utf-8')}) 
			f = urllib2.urlopen("http://127.0.0.1/stemming.php?"+params)  
			salida = f.read()  
			f.close()
			salida = salida.replace(',',' ')
			return salida
		except urllib2.HTTPError, e:  
		    print "Ocurrio un error"  
		    print e.code  
		except urllib2.URLError, e:  
		    print "Ocurrio un error"  
		    print e.reason

		return text

	def __remove_stop_words(self, text):

		text_list = text.split()
		#print self.stop_words_list
		for word in self.stop_words_list:
			if word in text_list:
				text_list.remove(word)
		new_text=''
		for word in text_list:
			new_text+=word+' '
		new_text.encode('utf-8')
		return new_text

	def test(self):
		print 'jaja'
		text = 'Desde hace mes  y medio, radiqué la documentación requerida para la devolución de un dinero correspondiente al valor de unos créditos para la realización de prácticas profesionales de la estudiante de ingeniería industrial, Daniela Camacho Bossio, con C.C. 1.143.341.475, las cuales no pudo realizar durante el presente semestre; al momento de radicar la documentación se me informó que llamarían una vez se girara el cheque, pero en vista la demora, consulté telefónicamente y se me i nformo que esas devoluciones estaban para el primer jueves del mes de noviembre. En el día de hoy (31 de Octubre de 2.012) que vuelvo a llamar para indagar, se me informar que todavía no estaba autorizara y que llamara el proximo JUEVES, que es día de fiesta. Considero esto una falta de respeto, porque están dilatando el asunto, por lo tanto solicito se me solucione este problema, ya que contaba con ese dinero para cumplir con unas obligaciones crediticias que en estos momentos me tienen muy preocupada, porque dada la insolvencia económica en la que me encuentro,no he podido cumplir con estas obligaciones, hasta el punto que se me puede decretar un embargo. POr otra parte elevo queja por la mala atención, ya que ese teléfono de Tesorería nunca lo responden y para poder obtener información al respecto tuve que llamar a vicerectoria.'
		text =self.clear_claim(text)
		print 'jeje'


"""cleaner = CorpusCleaner()
cleaner.test()"""